package top.zhillerlab.kmpdemo2.di

import org.koin.core.context.startKoin
import org.koin.dsl.KoinAppDeclaration



/**
 * 初始化Koin依赖注入框架
 *
 * 该函数用于在应用启动时设置Koin依赖注入框架的配置，并开始定义注入模块
 * 它允许传递一个自定义配置函数，以便于在不同项目中进行特定的配置调整
 *
 * @param config 一个可选的自定义配置函数，用于在启动Koin时进行额外配置
 *               该函数接收一个KoinApplicationBuilder作为参数，通过它可以自定义Koin的配置
 */
fun initKoin(config: KoinAppDeclaration? = null) {
  // 启动Koin，并在其配置过程中注入自定义配置（如果提供）以及定义好的注入模块
  startKoin {
    // 如果提供了自定义配置函数，则执行该函数，允许开发者对Koin进行特定的配置定制
    config?.invoke(this)
    // 注册应用所需的注入模块，这些模块包含应用中所有需要进行依赖注入的类和它们的创建逻辑
    modules(sharedModule, platformModule)
  }
}
